#pragma once

#include "ddplatform.h"
#include "ddclerr.h"

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "ddlua.h"

#ifdef DDSYS_WIN
    #ifdef DDCLLUA_EXPORTS
        #ifdef DDCLLUA_CORE
            #define DDCLLUA    __declspec(dllexport)
        #else
            #define DDCLLUA    __declspec(dllimport)
        #endif
    #else
        #define DDCLLUA extern
    #endif
#else
    #ifdef DDCLLUA_EXPORTS
        #define DDCLLUA extern
    #else
        #define DDCLLUA
    #endif
#endif


DDCLLUA int
luaopen_ddcl (lua_State * L);

DDCLLUA int
luaopen_ddcl_file (lua_State * L);
DDCLLUA int
luapush_ddcl_file (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_thread (lua_State * L);
DDCLLUA int
luapush_ddcl_thread (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_service (lua_State * L);
DDCLLUA int
luapush_ddcl_service (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_socket (lua_State * L);
DDCLLUA int
luapush_ddcl_socket (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_named (lua_State * L);
DDCLLUA int
luapush_ddcl_named (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_log (lua_State * L);
DDCLLUA int
luapush_ddcl_log (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_md5 (lua_State * L);
DDCLLUA int
luapush_ddcl_md5 (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_sha1 (lua_State * L);
DDCLLUA int
luapush_ddcl_sha1 (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_sha2 (lua_State * L);
DDCLLUA int
luapush_ddcl_sha2 (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_dson (lua_State * L);
DDCLLUA int
luapush_ddcl_dson (lua_State * L, int i);

DDCLLUA int
luaopen_ddcl_base64 (lua_State * L);
DDCLLUA int
luapush_ddcl_base64 (lua_State * L, int i);

